IF fehlerw=1 THEN AREA(360,96):AREA(376,96):AREA(376,104):AREA(360,104):AREAFILL 1 ELSE AREA(416,96):AREA(448,96):AREA(448,104):AREA(416,104):AREAFILL 1
LOCATE 15,5:PRINT "Tippen";SPC(35);"Ja Nein"
IF tippen=1 THEN AREA(360,112):AREA(376,112):AREA(376,120):AREA(360,120):AREAFILL 1 ELSE AREA(416,112):AREA(448,112):AREA(448,120):AREA(416,120):AREAFILL 1
LOCATE 17,5:PRINT "'Zum Teil richtig'=Fehler"SPC(16)"Ja Nein"
IF zTrF=1 THEN AREA(360,128):AREA(376,128):AREA(376,136):AREA(360,136):AREAFILL 1 ELSE AREA(416,128):AREA(448,128):AREA(448,136):AREA(416,136):AREAFILL 1
CALL CreateBox (21,30," OK "):CALL CreateBox (21,40,"Abbruch")
FOR a=256 TO 384 STEP 128
FOR b=0 TO 48 STEP 24
AREA (a+b,30):AREA (a+b+8,30):AREA(a+b+4,30-4):AREAFILL
AREA (a+b,40):AREA (a+b+8,40):AREA(a+b+4,40+4):AREAFILL
IF VokKap=0 THEN VokKap=1:AREA(32,32):AREA(32,40):AREA(88,40):AREA(88,32):AREAFILL 1:AREA (32,56):AREA(32,64):AREA(88,64):AREA(88,56):AREAFILL 1
END IF
IF mausy>=80 AND mausy<=88 THEN
IF mausx>=288 AND mausx<=480 THEN
IF mausx<=384 THEN IF anzeige=1 THEN anzeige=0 ELSE RETURN
IF mausx>=424 THEN IF anzeige=0 THEN anzeige=1 ELSE RETURN
IF mausx<=384 OR mausx>424 THEN AREA(288,80):AREA(384,80):AREA(384,88):AREA(288,88):AREAFILL 1:AREA(424,80):AREA(480,80):AREA(480,88):AREA(424,88):AREAFILL 1
END IF
END IF
IF mausx>=360 AND mausy<=448 THEN
IF mausx<=376 THEN
IF mausy>=96 AND mausy<=104 THEN IF fehlerw=0 THEN fehlerw=1 ELSE RETURN
IF mausy>=112 AND mausy<=120 THEN IF tippen=0 THEN tippen=1 ELSE RETURN
IF mausy>=128 AND mausy<=136 THEN IF zTrF=0 THEN zTrF=1 ELSE RETURN
END IF
IF mausx>=416 THEN
IF mausy>=96 AND mausy<=104 THEN IF fehlerw=1 THEN fehlerw=0 ELSE RETURN
IF mausy>=112 AND mausy<=120 THEN IF tippen=1 THEN tippen=0 ELSE RETURN
IF mausy>=128 AND mausy<=136 THEN IF zTrF=1 THEN zTrF=0 ELSE RETURN
END IF
IF mausx<=376 OR mausx>=416 THEN
IF mausy>=96 AND mausy<=104 THEN AREA(360,96):AREA(376,96):AREA(376,104):AREA(360,104):AREAFILL 1:AREA(416,96):AREA(448,96):AREA(448,104):AREA(416,104):AREAFILL 1
IF mausy>=112 AND mausy<=120 THEN AREA(360,112):AREA(376,112):AREA(376,120):AREA(360,120):AREAFILL 1:AREA(416,112):AREA(448,112):AREA(448,120):AREA(416,120):AREAFILL 1
IF mausy>=128 AND mausy<=136 THEN AREA(360,128):AREA(376,128):AREA(376,136):AREA(360,136):AREAFILL 1:AREA(416,128):AREA(448,128):AREA(448,136):AREA(416,136):AREAFILL 1
END IF
END IF
IF mausy>=156 AND mausy<=172 THEN
IF mausx>=224 AND mausx<=272 THEN RETURN Beginn
IF mausx>=304 AND mausx<=376 THEN RETURN backtoHaupt
END IF
RETURN
backtoHaupt:
RETURN HAUPTPROGRAMM
initbild:
COLOR 2,1:CLS
PRINT:PRINT " Lernen"
IF tippen=1 THEN
LINE (595,8)-(611,160),0,b
LOCATE 22,63:PRINT "Richtig: 0 %"
END IF
LOCATE 22,45:PRINT "Fehler: 0":fehler=0
LOCATE 22,2:PRINT "Vokabeln:";
IF wrong=0 THEN PRINT bis%+1-von%-KapAnz ELSE PRINT wrong
LOCATE 22,23:PRINT "Abgefragt: 0"
LINE(36,36)-(364,50),0,b
LINE(212,100)-(538,114),0,b
RETURN
zufallreihenfolge:
FOR qq=1 TO ende:vokabel(qq)=1:NEXT qq
FOR qq=von% TO bis%
IF RIGHT$(vokabel$(0,qq),1)=":" THEN vokabel(qq)=1 ELSE vokabel(qq)=0
NEXT qq
RANDOMIZE TIMER
FOR qq=1 TO bis%+1-von%-KapAnz
nochmal:
zufall=INT(RND*(bis%+1-von%))+von%
IF vokabel(zufall)=0 THEN reihenfolge(qq)=zufall:vokabel(zufall)=1 ELSE GOTO nochmal
NEXT qq
RETURN
fehlerreihenfolge:
RANDOMIZE TIMER
FOR qq=1 TO fehler
nochmal2:
zufall=INT(RND*ende)+1
IF vokabel(zufall)=0 THEN reihenfolge(qq)=zufall:vokabel(zufall)=1 ELSE GOTO nochmal2
IF zeile%<30 THEN spalte%=1:zeile%=zeile%+1:nummer%=nummer%+1:punktx=0:punkty=punkty+8:LOCATE zeile%,spalte%:PUT (punktx,punkty),kursor%:GOSUB FTitel:RETURN ELSE GOTO scrolloben
END IF
IF zeile%<30 THEN spalte%=1:zeile%=zeile%+1:nummer%=nummer%+1:punktx=0:punkty=punkty+8:LOCATE zeile%,spalte%:PUT (punktx,punkty),kursor%:GOSUB FTitel:RETURN ELSE GOTO scrolloben
END IF
IF eingabe$=CHR$(8) THEN
IF spalte%=1 THEN BEEP:PUT (punktx,punkty),kursor%:RETURN
IF Menupunkt=2 THEN IF phase%=2 THEN MENU 2,2,1:RETURN HAUPTPROGRAMM
IF Menupunkt=3 THEN GOSUB Schluss
END IF
IF Menutitel=2 THEN
IF Menupunkt=1 THEN
text$(1)="Eventuell sind die sich im Speicher":text$(2)="befindlichen Vokabeln nicht auf":text$(3)="Diskette abgespeichert worden.":text$(4)="Wollen Sie sie wirklich löschen?"
CALL Requester (3,"Programm Request:",text$()," Ja ","Nein")
IF request=1 THEN
FOR a=0 TO ende:vokabel$(0,a)="":vokabel$(1,a)="":NEXT
ende=1:datei$=""
IF phase%=3 THEN nummer%=1:zeile%=1:spalte%=1:punktx=0:punkty=0:WINDOW OUTPUT 2:CLS:WINDOW OUTPUT 1:CLS:PUT (punktx,punkty),kursor%
END IF
END IF
IF Menupunkt=2 THEN
CALL Filerequester (3,"Vokabeln laden:"," Mit Schublade (Franz,Engl,Latein)",datei$," OK ","Abbruch")
IF request=1 THEN GOSUB Laden ELSE RETURN
IF phase%=3 THEN WINDOW OUTPUT 2:CLS:WINDOW OUTPUT 1:CLS:GOSUB Vokabelschreib
IF phase%=2 THEN CLS:Ueberschrift$="Lernen":GOSUB Ueberschrift:GOSUB LernenMenu
END IF
IF Menupunkt=3 THEN
IF datei$="" THEN
CALL Filerequester (3,"Vokabeln speichern:","Mit Schublade (Franz,Engl,Latein)",datei$," OK ","Abbruch")
IF request=2 THEN RETURN
END IF
GOSUB Speichern
END IF
IF Menupunkt=4 THEN GOSUB Speichfrag
IF Menupunkt=5 THEN
CALL Filerequester (3,"Vokabeln anfügen:","Mit Schublade (Franz,Engl,Latein)",datei$," OK ","Abbruch")
IF request=1 THEN GOSUB Anfuegen ELSE RETURN
IF phase%=3 THEN start=nummer%-zeile%+1:GOSUB scrolling
END IF
IF Menupunkt=6 THEN GOSUB SpaceCheck
END IF
IF Menutitel=3 THEN
PUT (punktx,punkty),kursor%,XOR
IF Menupunkt=1 THEN start=1
IF Menupunkt=2 THEN start=ende-29
IF Menupunkt=3 THEN start=nummer%-zeile%-29
IF Menupunkt=4 THEN start=nummer%-zeile%+31
GOSUB scrolling
END IF
IF Menutitel=4 THEN
IF Menupunkt=1 THEN
IF einfueg=1 THEN einfueg=0:MENU 4,1,1 ELSE einfueg=1:MENU 4,1,2
END IF
IF Menupunkt=2 THEN PUT (punktx,punkty),kursor%,XOR:GOSUB einfuegen
IF Menupunkt=3 THEN PUT (punktx,punkty),kursor%,XOR:GOSUB loeschen
IF LEN (uebergabe$)>=spalte%-4 THEN MID$(uebergabe$,spalte%-4)=eingabe$:RETURN
uebergabe$=uebergabe$+eingabe$
RETURN
END SUB
Laden:
FOR qq=1 TO ende:vokabel$(0,qq)="":vokabel$(1,qq)="":NEXT
ende=0
OPEN "daten/"+datei$ FOR INPUT AS #1
WHILE NOT EOF(1)
ende=ende+1
LINE INPUT #1,vokabel$(0,ende)
LINE INPUT #1,vokabel$(1,ende)
WEND
CLOSE 1
RETURN
Speichfrag:
CALL Filerequester (3,"Vokabeln speichern:","Mit Schublade (Franz,Engl,Latein)",datei$," OK ","Abbruch")
IF request=1 THEN GOSUB Speichern
RETURN
Speichern:
OPEN "daten/"+datei$ FOR APPEND AS #1
IF LOF(1)<>0 AND Menupunkt=4 THEN
text$(1)="Es existiert bereits eine Datei mit":text$(2)="diesem Namen auf der Diskette.":text$(3)="Datei anfügen bzw drüberschreiben":text$(4)="oder neuen Dateinamen eingeben?"
text$(1)="Wollen Sie nun ihre Daten an die":text$(2)="Datei auf der Diskette anfügen":text$(3)="oder die Datei auf der Diskette":text$(4)="überschreiben (und damit löschen)?"
IF request=2 THEN CLOSE 1:OPEN "daten/"+datei$ FOR OUTPUT AS #1
END IF
IF Menupunkt=3 THEN CLOSE 1:OPEN "daten/"+datei$ FOR OUTPUT AS #1
FOR qq=1 TO ende
IF vokabel$(0,qq)="" AND vokabel$(1,qq)="" THEN Schleifeweiter
PRINT #1,vokabel$(0,qq)
PRINT #1,vokabel$(1,qq)
Schleifeweiter:
NEXT qq
CLOSE 1
RETURN
Anfuegen:
OPEN "daten/"+datei$ FOR INPUT AS #1
WHILE NOT EOF(1)
ende=ende+1
LINE INPUT #1,vokabel$(0,ende)
LINE INPUT #1,vokabel$(1,ende)
WEND
CLOSE 1
RETURN
Fehlerspeichern:
OPEN "daten/"+Fehlerdatei$ FOR APPEND AS #1
IF LOF(1)<>0 THEN
text$(1)="Es existiert bereits eine Datei mit":text$(2)="diesem Namen auf der Diskette.":text$(3)="Datei anfügen bzw drüberschreiben":text$(4)="oder neuen Dateinamen eingeben?"
text$(1)="Wollen Sie nun ihre Daten an die":text$(2)="Datei auf der Diskette anfügen":text$(3)="oder die Datei auf der Diskette":text$(4)="überschreiben (und damit löschen)?"
LKomma: IF MID$(vokabel$(a,b),kompos-1,1)=" " THEN vokabel$(a,b)=LEFT$(vokabel$(a,b),kompos-2)+RIGHT$(vokabel$(a,b),LEN(vokabel$(a,b))-kompos+1):kompos=kompos-1:GOTO LKomma
RKomma: IF MID$(vokabel$(a,b),kompos+1,1)=" " THEN vokabel$(a,b)=LEFT$(vokabel$(a,b),kompos)+RIGHT$(vokabel$(a,b),LEN(vokabel$(a,b))-kompos-1):GOTO RKomma
GOTO Kommacheck
checkend:
LINE (6,16)-(5+150/(2*ende)*b*(a+1),24),3,bf
NEXT
NEXT
WINDOW CLOSE 3
IF phase%=3 THEN start=nummer%-zeile%+1:GOSUB scrolling
RETURN
SUB CreateBox(yPos%,xPos%,text$) STATIC
LINE (xPos%*8-12,yPos%*8-10)-((LEN(text$)+xPos%)*8+4,yPos%*8+6),2,bf
LINE (xPos%*8-16,yPos%*8-12)-((LEN(text$)+xPos%)*8,yPos%*8+4),1,bf
LINE (xPos%*8-16,yPos%*8-12)-((LEN(text$)+xPos%)*8,yPos%*8+4),0,b